
22.11.2012, 12:50
|
 |
Интересующийся
|
|
Регистрация: 28.04.2012
Сообщений: 13
|
|
Отсылаются только цифры: JSON через AJAX
Проблема с отправкой данных как JSON посредством AJAX - передаются только числа...
$.ajax({
type: 'POST',
url: 'php/spamcontrol/keycheck.php',
data: {"akey": "qwe16", "bkey": "123", "ckey": "РУС!"}, // Передаваемая строка
dataType: 'json',
error: function () {
alert('Данные не передались');
},
success: function (data) {
alert (data);
}
});
Когда отправляю данную строку:
{"akey": "qwe16", "bkey": "123", "ckey": "РУС!"}
в этот скрипт:
<?php
$a = $_POST['akey'];
$b = $_POST['bkey'];
$c = $_POST['ckey'];
$my_a = json_decode($a);
$my_b = json_decode($b);
$my_c = json_decode($c);
echo $my_a.$my_b.$my_c;
?>
Приходят только цифры:
123
А ожидаю получить:
qwe16123РУС!
Скрин алерта:
Только не спрашивайте почему нельзя так сделать: php/spamcontrol/keycheck.php?akey=qwe16&bkey=123&ckey=РУС! - я принципиально хочу понять json и застрял на месте.
|
|

22.11.2012, 12:58
|
 |
Интересующийся
|
|
Регистрация: 28.04.2012
Сообщений: 13
|
|
В догонку:
- php 5
- denwer
- opera 11.5 и mozilla 8.0.1
- firebug:
akey qwe16
bkey 123
ckey РУС!
Исходный код
akey=qwe16&bkey=123&ckey=%D0%A0%D0%A3%D0%A1!
|
|

22.11.2012, 13:23
|
 |
Сам по себе
|
|
Регистрация: 09.06.2009
Сообщений: 963
|
|
json_decode - это зачем делаешь? О_о
|
|

23.11.2012, 10:19
|
 |
Интересующийся
|
|
Регистрация: 28.04.2012
Сообщений: 13
|
|
Спасибо за наводку!
В процессе выяснил:
1. json_decode не требуется ( $my_a = json_decode($a);)
2. принимать данные обратно в формате json не нужно ( dataType: 'json',)
Правильный код:
$.ajax({
type: 'POST',
url: 'php/spamcontrol/keycheck.php',
data: {"akey": "qwe16", "bkey": 123, "ckey": "РУС!"}, // кавычки у числа не обязательны
dataType: '', // не требуется
error: function () {
alert('Данные не передались');
},
success: function (data) {
alert (data);
}
});
PHP:
<?php
$a = $_POST['akey'];
$b = $_POST['bkey'];
$c = $_POST['ckey'];
// Никаких json_decode
echo $a.$b.$c;
?>
Результат:
А как тогда мне передать в PHP скрипт всю строку целиком, чтобы я мог ее там преобразовать при помощи json_decode?
|
|

23.11.2012, 16:12
|
Аспирант
|
|
Регистрация: 12.10.2012
Сообщений: 90
|
|
var data = {"akey": "qwe16", "bkey": 123, "ckey": "РУС!"};
$.ajax({
data: {str: JSON.stringify(data)}
, ...
})
Не будет работать в браузерах, не имеющих встроенного объекта JSON. Кажется, это IE7-, точнее можно глянуть в интернете.
Либо же формировать сами данные не объектом, а json-строкой, а потом кидать их:
var data = '{"akey": "qwe16", "bkey": 123, "ckey": "РУС!"}';
$.ajax({
data: {str: escape(data)}
, ...
})
|
|

23.11.2012, 17:18
|
 |
Профессор
|
|
Регистрация: 28.03.2012
Сообщений: 376
|
|
Сообщение от Sanda
|
var data = '{"akey": "qwe16", "bkey": 123, "ckey": "РУС!"}';
$.ajax({
data: {str: escape(data)}
, ...
})
|
красивее:
var data = {"akey": "qwe16", "bkey": 123, "ckey": "РУС!"};
$.ajax({
data: data,
...
|
|

23.11.2012, 17:37
|
Аспирант
|
|
Регистрация: 12.10.2012
Сообщений: 90
|
|
keen, вопрос звучал так:
"А как тогда мне передать в PHP скрипт всю строку целиком, чтобы я мог ее там преобразовать при помощи json_decode?"
|
|

23.11.2012, 17:41
|
 |
Профессор
|
|
Регистрация: 28.03.2012
Сообщений: 376
|
|
итого: берём json, представляем его в виде строки, передаём на сервер, там из строки снова делаем json и обрабатываем. изврат же!
|
|

23.11.2012, 22:04
|
 |
сегодня в 12:34|Комментир
|
|
Регистрация: 12.04.2011
Сообщений: 1,180
|
|
Зачем если не секрет использовать JSON? (это не издевка, правда не понятно)
__________________
оляля, ололо
|
|

24.11.2012, 00:26
|
 |
Профессор
|
|
Регистрация: 28.03.2012
Сообщений: 376
|
|
Сообщение от 9xakep
|
Зачем если не секрет использовать JSON? (это не издевка, правда не понятно)
|
вообще или сейчас?
впрочем, по-моему ответы настолько очевидны, что..
|
|
|
|